package cn.bonoon.kernel.web.annotations.components;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;


/**
 * <pre>
 * 使用@AsTabs生成的界面，fit属性值为true；
 * 高度和宽度应该由所在的上级容器(dialog,layout等)来决定；
 * 
 * 默认的情况下，生成的tab是在表格的下方，即上面为基本信息，下面为tab及引用的内容；
 * 如果需要把基本信息也当然tab的一个tab项，则需要使用{@link TabHome}来指定
 * <hr/>
 * 如果定义成了tabs必须指定所需要的tab项，可能通过{@link #value()}来指定，
 * 类型为{@link TabItem}来指定一个tab
 * </pre>
 * @author jackson
 *
 */
@Target(TYPE)
@Retention(RUNTIME)
public @interface AsTabs {
	
	///** 参数， */
	//String[] parameters() default {};
	
	TabItem[] value();
	
	/** 如果指定值，则会统一tab名称部分的宽度 */
	int headerWidth() default 0;
	
	/** 指定生成的tab的高度，所以用于生成的dialog界面的话，那么dialog的高度需要大于这个值；
	 * 否则就可以会出现由于高度指定不一致而出现的滚动条的问题 */
	int height() default 480;
	
	TabPosition tabPosition() default TabPosition.TOP;
	ToolPosition toolPosition() default ToolPosition.RIGHT;
	
	/** <pre> <code>
	 Code example:
		
		Define tools with an array.
		
		$('#tt').tabs({
			tools:[{
				iconCls:'icon-add',
				handler:function(){
					alert('add')
				}
			},{
				iconCls:'icon-save',
				handler:function(){
					alert('save')
				}
			}]
		});
		
		Define tools with a exist DOM container.
		
		$('#tt').tabs({
			tools:'#tab-tools'
		});
		<div id="tab-tools">
			<a href="#" class="bupabutton" plain="true" iconCls="icon-add"></a>
			<a href="#" class="bupabutton" plain="true" iconCls="icon-save"></a>
		</div>
		
	 * </code> </pre> */
	String tools() default "";
	
	enum ToolPosition{
		
		LEFT("'left'"), RIGHT("'right'");
		
		private final String name;
		
		private ToolPosition(String name){
			this.name = name;
		}
		
		@Override
		public String toString() {
			return name;
		}
	}
}
